import axios from "axios";
import Cookies from "js-cookie";
import {message} from "ant-design-vue";
// import { baseDefaultUrl } from '../config/config.js'
// axios.defaults.withCredentials = true
const instance = axios.create({
    // baseURL: "/api",
    // baseURL: 'http://61.166.9.9:8182/',//正式环境
    // baseURL: 'http://82.156.69.136:8182/',//测试环境
    baseURL: 'http://114.132.184.120:6001/',
    // baseURL: 'http://114.132.184.120:8182',
    timeout: 600000,
});

// 请求拦截
instance.interceptors.request.use(
    (config) => {
        // 自定义header，可添加项目token
        const token = Cookies.get("token");
        if (token) {
            config.headers.token = token;
        }
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);

// 响应拦截
instance.interceptors.response.use(
    (response) => {
        const code = response.data.code;
        const msg = response.data.msg;
        
        if (code !== 0) {
            message.error(response.data.msg);
        }
        
        if (code == 401 && msg == "no auth") {
            const currentPath = window.location.hash.slice(1); // 获取当前路径
            this.$message.error('该用户没有权限！即将跳转至登陆页面')
            this.$router.push('/login')
            if (currentPath !== '/login') {
                // message.error('没有权限');
                // // 清除相关存储
                Cookies.remove('token');
                Cookies.remove('roleId');
                localStorage.removeItem('menuList');
                
                // // 使用相对路径进行重定向
                window.location.replace('#/login');
                // // 刷新页面以确保状态重置
                // window.location.reload();
            }
        }
        return response;
    },
    (error) => {
        console.error('请求错误:', error);
        message.error("网络连接错误，请联系管理员");
        // Cookies.clear();
        return Promise.reject(error);
    }
);

/*
 *封装get方法
 *@param{String} url [请求地址]
 *@param{Object} params 请求参数
 */
export function Get(url, params) {
    return new Promise((resolve, reject) => {
        instance
            .get(url, {
                params: params,
            })
            .then((res) => {
                resolve(res.data);
            })
            .catch((error) => {
                reject(error.data);
            });
    });
}

/**
 *封装post方法
 *@param{String} url 请求地址
 *@param{Object} params 请求参数
 */
export function Post(url, params) {
    return new Promise((resolve, reject) => {
        instance
            .post(url, params)
            .then((res) => {
                resolve(res.data);
            })
            .catch((error) => {
                reject(error.data);
            });
    });
}

/**
 *封装put方法
 *@param{String} url 请求地址
 *@param{Object} params 请求参数
 */
export function Put(url, params) {
    return new Promise((resolve, reject) => {
        instance
            .put(url, params)
            .then((res) => {
                resolve(res.data);
            })
            .catch((error) => {
                reject(error.data);
            });
    });
}

/**
 *封装patch方法
 *@param{String} url 请求地址
 *@param{Object} params 请求参数
 */
export function Patch(url, params) {
    return new Promise((resolve, reject) => {
        instance
            .put(url, params)
            .then((res) => {
                resolve(res.data);
            })
            .catch((error) => {
                reject(error.data);
            });
    });
}

/**
 *封装delete方法
 *@param{String} url [请求地址]
 *@param{Object} params [请求参数]
 */
export function Delete(url, params) {
    return new Promise((resolve, reject) => {
        instance
            .delete(url, {
                params: params,
            })
            .then((res) => {
                resolve(res.data);
            })
            .catch((error) => {
                reject(error.data);
            });
    });
}

export default instance;
